var algors = {
	"Naked Single-": function(){
			var data = sdkHistory.current();
			var singles= data.filterByCount(1),
				houseIDs= rules.houseIDs,
				i=0,
				j=0,
				k=0,
				found = false,
				neighbours = [];
				
			do{
				// Iterating Singles
				j=0;
				do{
					//Iterating Houses
					if( singles[i].isInHouse( houseIDs[j])){
						neighbours= data.filterByHouse( houseIDs[j]).filterNotCount(1);
						k=0;
						do{
							// Iterating Neighbours
							found = neighbours[k].disable( singles[i].candids[0]);
						}while( !found && ++k< neighbours.length);
					}
				}while( !found && ++j< houseIDs.length);
			}while( !found && ++i< singles.length);
			if( found){
				return found;
			}
		},
	"Naked Single": function( ){
			var data = sdkHistory.current(),
				changes = sdkChange([]);
			data.filterByCount(1).forEach( function(solvedCell){
				solvedCell.houses.forEach( function(sCHouseId){
					changes = changes.add( data.filterByHouse( sCHouseId).filterNotCount(1).disable( solvedCell.candids[0]));
				});
			});
			changes = sdkChange.unique( changes);
			return changes;
		},
	"Hidden Single": function( data){
			var data = sdkHistory.current(),
				changes = sdkChange([]),
				blub;
			rules.houseIDs.forEach( function(house){
				rules.candidIDs.forEach( function(candidID){
					blub = data.filterByHouse( house).filterByCandid( candidID);
					if( blub.length === 1 && blub[0].candids.length !== 1){ 
						changes = changes.add(blub.only( candidID));
					}
				});
			});
			
			changes = sdkChange.unique( changes);
			return changes;
		}
	};
